1. Field of the Invention
The present invention relates to computer input/output interfaces and more particularly to providing application program control of the display cursor through a mouse or trackball.
2. Description of the Problem
The computer mouse or puck and its associated display pointer (usually termed "cursor" when associated with Microsoft Corp. operating system shells) has become along with the computer keyboard one of the two default methods of user interaction with personal computers in systems employing a graphical user interface (GUI) shell. Examples of popular GUI shells include those used with the Apple MacOS operating system, the Workplace Shell of the IBM OS/2 operating system, and most recently, the Microsoft Windows 95 shell. To the computer user, a GUI is generally characterized by the display on a computer display device of graphical icons representing programs, data files or other operational elements of the system, which may "selected" or "activated" by moving a display pointer or cursor to the icon and "clicking" a mouse button one or more times while the cursor icon is collocated with the functional icons. In general the replacement of earlier command line interfaces, characterized by teletype like, line by line entry of cryptic commands with GUIs has accommodated the transfer to the user of the power to move seemingly seamlessly between application programs. GUIs present a number of problems for shell design, many resulting from the relaxation of the strict temporal sequence of events forced on users by a command interpreter using command line interface shell.
A shell functions as a user command interpreter and as an output device. Use of a GUI shell as a command interpreter was made possible in large part by cursor-addressable display screens, where the locations of individual pixels on the screen has input significance for the computer system. Cursors, which are associated with a "hot spot", a pixel of current input significance, are displayed to the user as a sort of floating icon. The user moves the icon, and its associated hot spot, by manipulation of a coordinate input device, such as the arrow keys on a computer keyboard, a light pen, a joy stick, or most commonly, the mouse. An operation is initiated by clicking, or potentially by simply allowing the cursor icon to linger over a target icon. The target is identified by coincidence in the coordinates of the cursor hot spot and the coordinates of the target icon (which will embrace several pixels).
Because programmers can assume that a mouse is attached to the vast majority of personal computers, it is natural to allow their use as data input devices for application programs, particularly graphically oriented programs such as cad programs or games. Hence a mouse may be used to draw a line in a cad program or to change the apparent orientation of the user in a two or three dimensional environment of a game program. Many application programs utilize the cursor in an analogous fashion to the use of the cursor in the base operating system shell, which is to activate certain functions when a user "presses" a special purpose icon called a control button. In a game environment, coordinate information from the mouse is used but the cursor maybe suppressed. In application programs where the cursor remains displayed, programmers generally accept the default operating system defined movement of the cursor in response to user movement of the mouse.
Some operating system environments, particularly that provided by the Microsoft Windows 95 product, limit user control over cursor behavior to setting "mouse speed". The default behavior of the cursor in response to user inputs using a mouse are controlled by the mouse and display device drivers. In Windows 95, user modification of mouse/cursor behavior is done through a "MouseSpeed" setting. Taken as a literal description of what is occurring, the term "MouseSpeed" is imprecise. By default, Windows 95 provides only three modifications on basic linear cursor movement. The slowest rate is called the basic cursor rate. The second speed provided doubles the basic cursor rate. The third speed provided quadruples the basic cursor rate. Additional speed settings are obtained by defining threshold mouse movement rates where the doubling and quadrupling of the basic cursor rate occur. At setting 0 the basic cursor rate is always used. At setting 1 the basic cursor rate is doubled if the mouse is moved faster than a first minimum rate. At setting 2 the basic cursor rate is doubled if the mouse is moved faster than the first minimum rate and quadrupled if moved faster than a second, higher threshold. At setting 3 the minimum threshold speeds of mouse movement for doubling and quadrupling cursor speed occur at lower minimums. The process is repeated for each successive higher setting of "mouse speed".
Some users can benefit by providing far slower cursor responsiveness to mouse movement than that provided by the Windows 95 default mouse device driver. While finer control of cursor responsiveness to mouse movement could be achieved by replacing the mouse device driver, such a change would effect all applications and the GUI shell. What is needed is a non operating system specific way of changing cursor behavior for specific application programs without modifying the operating system environment. Preferably, such functionality should be operating system independent and tolerant of operating systems with default mouse device drivers having limited functionality, such as that of Windows 95.